/*
 * 文件名：UserService.java
 * 版权：Copyright by will_awoke
 * 描述：
 * 修改人：will_awoke
 * 修改时间：2014-8-18
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package com.qbgs.rbac.service;


import com.qbgs.base.BaseResult;


/**
 * 
 * @author will_awoke
 * @version 2014-8-18
 * @see UserService
 * @since
 */
public interface UserService
{

    /**
     * 用户分页查询
     * @param currentPage  当前页
     * @param numPerPage 每页显示记录数
     * @param loginName   用户名
     * @return
     * @see
     */
    BaseResult queryUserPage(int currentPage, int numPerPage, String loginName);

    /**
     * 修改用户登录密码
     * @param loginName
     * @param newPwd
     * @return 
     * @see
     */
    boolean updateUserPwd(String loginName, String newPwd);

    /**
     * 新增用户，并为其分配角色
     * @param loginName
     * @param password
     * @param realName
     * @param email
     * @param state
     * @param remarks
     * @param roleId
     * @return 
     * @see
     */
    boolean addUserOfRole(String loginName, String password, String realName, String email,
                          String state, String remarks, String roleId);

    /**
     * 判断用户账号的唯一性
     * @param loginName
     * @return true=已存在相同用户账号 flase=不存在
     * @see
     */
    boolean judgeLoginNameUnique(String loginName);

    /**
     * 根据用户id查询用户所绑定的角色id（多个角色id采用英文逗号连接）
     * @param userId
     * @return 
     * @see
     */
    String queryRoleIdsOfUser(String userId);

    /**
     * 根据用户id查询用户所绑定的角色名称（多个角色名称采用英文逗号连接）
     * @param userId
     * @return 
     * @see
     */
    String queryRoleNamesOfUser(String userId);

    /**
     * 删除用户  此处删除为逻辑删除，即修改用户状态为注销，而且不删除用户所绑定的角色关系
     * @param userId
     * @return 
     * @see
     */
    boolean deleteUser(String userId);

    /**
     * 修改用户，并为其分配角色
     * @param userId
     * @param loginName
     * @param realName
     * @param email
     * @param remarks
     * @param roleId
     * @return 
     * @see
     */
    boolean updateUserOfRole(String userId, String loginName, String realName, String email, String remarks,
                          String roleId);

}
